#!/usr/bin/env python3
"""
download_hf_model_static.py

一键下载指定 HuggingFace 模型到本地路径，配置项全部在脚本开头设置。
"""

import os
from huggingface_hub import snapshot_download

# ========== 在此处配置 ==========
# HF 仓库 ID，比如 "gpt2"、"facebook/opt-1.3b"、或私有模型 "username/model-name"
MODEL_ID = "Qwen/Qwen2.5-7B-Instruct"

# 本地保存路径
DEST_DIR = "model/Qwen2.5-7B-Instruct"

# 分支/标签/提交 SHA，默认 "main"
REVISION = "main"

# 是否裁剪（Prune）非必要文件，仅保留 allow_patterns 中的文件
PRUNE = True

# 允许下载的文件模式列表（根据需要调整）
ALLOW_PATTERNS = [
    "*.bin",    # PyTorch 权重
    "*.pt",     # 另一种权重格式
    "*.safetensors",  # safetensors 格式
    "*.json",   # 配置文件
    "*.txt",    # README、tokenizer 相关
    "*.yaml",   # 可能存在的配置
    "*.model",
]
# ================================

def main():
    os.makedirs(DEST_DIR, exist_ok=True)
    print(f">>> Downloading model '{MODEL_ID}' (rev={REVISION}) into '{DEST_DIR}' ...")

    snapshot_download(
        repo_id=MODEL_ID,
        revision=REVISION,
        cache_dir=DEST_DIR,
        local_dir=DEST_DIR,
        allow_patterns=ALLOW_PATTERNS,
        ignore_patterns=None,  # prune 模式下，先 ignore 全部再 allow
    )

    print(">>> Download completed successfully.")

if __name__ == "__main__":
    main()
